package cn.tedu.csmall.cart.webapi.service.impl;

import cn.tedu.csmall.cart.service.ICartService;
import cn.tedu.csmall.cart.webapi.mapper.CartMapper;
import cn.tedu.csmall.commons.pojo.cart.dto.CartAddDTO;
import cn.tedu.csmall.commons.pojo.cart.model.CartTb;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//@DubboService注解标记的业务逻辑层实现类，其中所有方法都会注册到Nacos中
//其他服务在订阅时会发现当前项目提供的业务逻辑层方法，以备Dubbo调用
@DubboService
@Service
@Slf4j
public class CartServiceImpl implements ICartService {
    @Autowired
    private CartMapper cartMapper;


    @Override
    public void cartAdd(CartAddDTO cartAddDTO) {
        CartTb cart = new CartTb();
        //通过工具类直接将cartAddDTO对象中的同名属性赋值给cart对象
        BeanUtils.copyProperties(cartAddDTO,cart);
        cartMapper.insertCart(cart);
        log.info("新增商品到购物车中！{}",cart);
    }

    @Override
    public void deleteCartByUserIdAndCommodityCode(String userId, String commodityCode) {
        cartMapper.deleteCartByUserIdAndCommodityCode(userId,commodityCode);
        log.info("删除购物车中的商品！");
    }
}
